package com.pubinfo.passbook.common.service.master;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pubinfo.passbook.common.entity.TRabbitmqPersonConvert;
import com.pubinfo.passbook.common.model.bo.rabbitmq.RabbitMqRoot;
import com.pubinfo.passbook.common.model.dto.system.OrgTreeColleagueListParam;
import com.pubinfo.passbook.common.model.dto.system.OrgTreePersonListParam;
import com.pubinfo.passbook.common.model.dto.system.PersonListParam;
import com.pubinfo.passbook.common.model.vo.persion.RabbitmqPersonConvertVO;

import java.util.Collection;
import java.util.List;

/**
 * @author zhouch
 * @date 2021-10-27
 */
public interface TRabbitmqPersonConvertService extends IService<TRabbitmqPersonConvert> {

    /**
     * 对不同人员消息的处理类型进行处理.
     *
     * @param personMsg
     * @return
     * @author zhouch
     */
    Boolean processPersonMsg(RabbitMqRoot personMsg);
  
  /**
   * 搜索人员通过关键词
   *
   * @return
   */
  IPage<RabbitmqPersonConvertVO> searchPersonsByKeyword(PersonListParam params);

    /**
     * 保存或者更新, 同时更新账户组织关系
     *
     * @param person
     * @return
     */
    boolean saveOrUpdateWithOrgRef(TRabbitmqPersonConvert person);

    /**
     * 保存或者更新, 同时更新账户组织关系
     *
     * @param person
     * @return
     */
    boolean batchSaveOrUpdateWithOrgRef(Collection<TRabbitmqPersonConvert> person);

    /**
     * 根据组织ID查询所有下面的人员
     *
     * @param params
     * @return
     */
    IPage<TRabbitmqPersonConvert> getPersonsByOrgId(OrgTreePersonListParam params);

    /**
     * 通过该用户ID, 查询所在部门所有员工
     *
     * @param params
     * @return
     */
    IPage<TRabbitmqPersonConvert> getPersonsByPersonOrgId(OrgTreeColleagueListParam params);
  
  List<TRabbitmqPersonConvert> getPersonsByPersonOrgId(String acct);

    Boolean hasColleague(Integer acctId, Integer acctId2);

    TRabbitmqPersonConvert getPersonByAcct(String ncCode);

}
